/**
 * @author		FengChaoHua
 * @create		2018年4月29日 下午3:38:20
 * @project	huilun_wx
 * @desc		
 */
package top.wardyan.base.util;

import com.jfinal.kit.PathKit;
import com.jfinal.plugin.activerecord.dialect.SqlServerDialect;
import com.jfinal.plugin.activerecord.generator.Generator;

import top.wardyan.base.datasource.AbstractDatasource;

/**
 * @author FengChaoHua
 *
 */
public abstract class BeanGenerator {
	
	protected abstract String getBaseModelPackageName();
	protected abstract String getBaseModelOutputDir();
	protected abstract String getModelPackageName();
	
	public void generateBean(){
		// base model 所使用的包名
	    String baseModelPackageName = getBaseModelPackageName();		// "ward.sim.model.base";
	    // base model 文件保存路径
	    String baseModelOutputDir = PathKit.getWebRootPath() + getBaseModelOutputDir();	//"/../src/ward/sim/model/base";
	    // model 所使用的包名 (MappingKit 默认使用的包名)
	    String modelPackageName = getModelPackageName();	// "ward.sim.model.base";
	    // model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
	    String modelOutputDir = baseModelOutputDir + "/..";

	    // 创建生成器
	    
	    
	    Generator gernerator = new Generator(getDatasource().getDp().getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);
	    // 设置数据库方言
	    //gernerator.setDialect(new MysqlDialect());
	    gernerator.setDialect(new SqlServerDialect());
	    // 添加不需要生成的表名
	    //gernerator.addExcludedTable("adv");
	    // 设置是否在 Model 中生成 dao 对象
	    gernerator.setGenerateDaoInModel(true);
	    // 设置是否生成字典文件
	    gernerator.setGenerateDataDictionary(true);
	    // 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user"，移除前缀 "osc_"后生成的model名为 "User"而非 OscUser
	    //gernerator.setRemovedTableNamePrefixes("wt_");
	    // 这一行先留着
	    gernerator.setMetaBuilder(new SqlserverMetaBuilder(getDatasource().getDp().getDataSource(),false));
	    // 生成
	    gernerator.generate();
	}
	
	protected abstract AbstractDatasource getDatasource();
	
	public static void main(String[] args){
		//generateBean();
	}

}
